/**
 *Copyright (c) 2024 watereyes
 * safetymanagement is licensed under Mulan PubL v2.
 * You can use this software according to the terms and conditions of the Mulan
 * PubL v2.
 * You may obtain a copy of Mulan PubL v2 at:
 *          http://license.coscl.org.cn/MulanPubL-2.0
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PubL v2 for more details.
 */
package com.koron.purpose.mapper;


import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface UsingStandBookMapper {
    /**
     * 列表查询
     * @param map
     * @return
     */
    List<Map> queryForList(Map map);

    /**
     * 统计 列表查询 总个数
     * @param map
     * @return
     */
    int countQueryForList(Map map);

    /**
     * 根据ID查询投入计划
     * @param id
     * @return
     */
    Map queryById(@Param("id") String id);

    /**
     * 根据 投入计划id 查询 投入计划明细
     * @param contributoryPlanId
     * @return
     */
    List<Map> getDetailById(@Param("contributoryPlanId") String contributoryPlanId);

    /**
     * 根据 投入计划明细id 查询 投入实际明细
     * @param detailId 投入计划明细id
     * @return
     */
    List<Map> getRealityDetailById(String detailId);

    /**
     * 根据 投入计划id 修改投入计划的 实际投入金额
     * @param id 投入计划id
     * @param realityMoney 实际投入金额
     * @param detailStatusFlag 实际投入金额
     * @return
     */
    int updatePlanRealMoneyById(@Param("id") String id, @Param("realityMoney") BigDecimal realityMoney,
                                @Param("detailStatusFlag") String detailStatusFlag);

    /**
     * 根据 投入计划id 查询所有 投入实际明细
     * @param contributoryPlanId
     * @return
     */
    List<Map> queryAllRealDetails(@Param("contributoryPlanId") String contributoryPlanId);

    /**
     * 根据 投入计划id 删除所有 投入实际明细
     * @param contributoryPlanId
     * @return
     */
    Integer deleteRealDetails(@Param("contributoryPlanId") String contributoryPlanId);

    /**
     * 新增 投入实际明细
     * @param realDetailList
     */
    void insertRealDetails(@Param("realDetails") List<Map> realDetailList);

    /**
     * 导出 列表查询
     * @param map
     * @return
     */
    List<Map> queryExportForList(Map map);

    /**
     * 根据 投入计划id修改  使用台账状态(0-未提交 1-审批中 2-审批通过)
     * @param id
     * @param detailStatusFlag
     * @return
     */
    int updateContPlanDStatusById(@Param("id") String id, @Param("detailStatusFlag") String detailStatusFlag);

    int updateContributoryRealityDetailByPlanId(@Param("planId") String planId, @Param("statusFlag") String statusFlag);
}
